/*
Copyright [2012] [Maria Eugenia Malagamba]
Copyright [2012] [Leandro Pellegrino]
Copyright [2012] [Julia Gambuzzi]
Copyright [2012] [Ignacio Capodanno]

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
*/

#include "SuperEscudo.h"
using namespace Entidades;

SuperEscudo::SuperEscudo(double direccion, int velocidad, double posicionX, double posicionY, string pathDeLaImagen)
	: Colisionador(posicionX, posicionY, pathDeLaImagen, 70, 70,(double)0,(int) 6){
	this->direccion = direccion;
	this->velocidad = ((double)velocidad) / 15.0;
	this->estado='A';

	// duracion infinita
	this->duracion = std::numeric_limits<int>::max();
}

bool SuperEscudo::moverse(){
	this->framesCircular();
	this->posicionX += cos(this->direccion*(PI/180.0))*this->velocidad;
	this->posicionY += sin(this->direccion*(PI/180.0))*this->velocidad;
	return true;
}

void SuperEscudo::posicionarse(int altoDeLaImagen,int anchoDeLaImagen, double posX, double posY){
	// inicialmente posiciono la esquina superior izquierda en el centro de la nave
	this->framesCircular();
	double x = posX + anchoDeLaImagen / 2;
	double y = posY + altoDeLaImagen / 2;
	double correccion = -35; 
	
	this->setPosicionX(x + correccion);
	this->setPosicionY(y + correccion);
}

bool SuperEscudo::colisionarCon(Colisionable *otroColisionable){
	// chequeo sólo colision circular
	bool hayColisionDeContorno = false;
	hayColisionDeContorno = this->hayColisionCircularCon(otroColisionable);

	if (hayColisionDeContorno){
		otroColisionable->colisionar(this->getPoderDeDestruccion());
	}

	return hayColisionDeContorno;
}

char SuperEscudo::getEstado(){
	return this->estado;
}

void SuperEscudo::setEstado(char estado){
	this->estado = estado;
}

int SuperEscudo::getDuracion(){
	return this->duracion;
}

SuperEscudo::~SuperEscudo(){
}
